{
  "name": "Case 65 - New Market Entry Signals Detector",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        -1200,
        -176
      ],
      "id": "11bfc70a-e480-4d6d-959d-2e44a3babe4f",
      "name": "Weekly Schedule - Monday 9 AM"
    },
    {
      "parameters": {
        "actorId": {
          "__rl": true,
          "value": "nH2AHrwxeTRJoN5hX",
          "mode": "list",
          "cachedResultName": "Instagram Post Scraper (apify/instagram-post-scraper)",
          "cachedResultUrl": "https://console.apify.com/actors/nH2AHrwxeTRJoN5hX/input"
        },
        "customBody": "{\n  \"onlyPostsNewerThan\": \"2025-12-01\",\n  \"resultsLimit\": 15,\n  \"skipPinnedPosts\": false,\n  \"username\": [\n    \"@starbucks\",\n    \"@mcdonalds\",\n    \"@nike\",\n    \"@adidas\",\n    \"@zara\",\n    \"@hm\",\n    \"@uniqlo\",\n    \"@ikea\",\n    \"@sephora\",\n    \"@lululemon\"\n  ]\n}"
      },
      "type": "@apify/n8n-nodes-apify.apify",
      "typeVersion": 1,
      "position": [
        -1008,
        -176
      ],
      "id": "4294cfbe-d6a7-45e0-bbd8-de371468c604",
      "name": "Scrape Competitor Instagram",
      "credentials": {
        "apifyApi": {
          "id": "w5S6YBbbyUddEfQA",
          "name": "Apify account"
        }
      }
    },
    {
      "parameters": {
        "resource": "Datasets",
        "datasetId": "={{ $json.defaultDatasetId }}",
        "limit": 150
      },
      "type": "@apify/n8n-nodes-apify.apify",
      "typeVersion": 1,
      "position": [
        -816,
        -176
      ],
      "id": "5d17908f-c297-4583-944e-41712c060b4f",
      "name": "Get Dataset Items",
      "credentials": {
        "apifyApi": {
          "id": "w5S6YBbbyUddEfQA",
          "name": "Apify account"
        }
      }
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "GPT-4o-mini"
        },
        "responses": {
          "values": [
            {
              "role": "system",
              "content": "=You are a Market Entry Intelligence Expert.\n\nAnalyze Instagram posts to identify signals of geographic market expansion, new store openings, or entry into new markets.\n\nReturn ONLY valid JSON in this exact format:\n{\n  \"is_market_entry\": \"yes|no\",\n  \"confidence\": 0.95,\n  \"reason\": \"brief explanation\"\n}\n\nCriteria for \"yes\" (market entry signal):\n✅ Announces new store/location opening in specific city/country\n✅ \"Now available in [country/region]\" messaging\n✅ \"Coming soon to [location]\" announcements\n✅ Partnership announcements for new geographic markets\n✅ Expansion into new countries/regions explicitly stated\n✅ Grand opening events in new markets\n✅ Posts in new languages indicating market entry\n✅ \"First [brand] store in [country]\" announcements\n✅ Regional/country-specific launch events\n\nCriteria for \"no\" (NOT market entry):\n❌ Generic product launches without geographic context\n❌ Posts about existing stores/markets\n❌ Online-only availability (unless explicitly new market)\n❌ Pop-up shops or temporary events (unless stated as market entry)\n❌ General brand messaging without location specifics\n❌ Posts about store renovations in existing markets\n❌ Job postings or hiring announcements\n❌ Celebrity/influencer partnerships without geographic angle\n\nRules:\n1. confidence: 0-1 scale (0.9+ for very clear market entry signals)\n2. reason: 1 sentence explaining the decision\n3. Be strict - require explicit geographic expansion messaging\n4. Return ONLY the JSON object, no explanations"
            },
            {
              "content": "=Analyze this Instagram post for market entry signals:\n\nBrand: {{ $json.ownerUsername }}\nPost Date: {{ $json.timestamp }}\nCaption: {{ $json.caption }}\n\nReturn only JSON."
            }
          ]
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 2.1,
      "position": [
        -656,
        -176
      ],
      "id": "46fbd9d7-ebc9-455f-bb59-64c58360bfb5",
      "name": "AI Validation - Market Entry Filter",
      "credentials": {
        "openAiApi": {
          "id": "ICwxUBbatsF2sDvy",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 1
          },
          "conditions": [
            {
              "id": "filter-condition-001",
              "leftValue": "={{ $json.is_market_entry }}",
              "rightValue": "yes",
              "operator": {
                "type": "string",
                "operation": "equals",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2,
      "position": [
        -16,
        -176
      ],
      "id": "c23dda5f-2a7c-4159-b168-11d201a08dfd",
      "name": "Filter Only Market Entry Posts"
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4o",
          "mode": "list",
          "cachedResultName": "GPT-4o"
        },
        "responses": {
          "values": [
            {
              "role": "system",
              "content": "=You are a Market Intelligence Analyst specializing in geographic expansion tracking.\n\nExtract structured market entry information from Instagram posts.\n\nReturn ONLY valid JSON with these exact fields:\n{\n  \"new_market\": \"Country or region name\",\n  \"city\": \"City name if mentioned, otherwise 'Multiple' or 'Not specified'\",\n  \"entry_type\": \"Physical Store|Online Launch|Partnership|Regional Expansion|Franchise\",\n  \"timeline\": \"Opened|Opening Soon|Coming [Month/Year]|TBD\",\n  \"store_count\": \"Number of stores/locations if mentioned, otherwise 'Not specified'\",\n  \"key_details\": \"Brief summary of the expansion (max 150 chars)\",\n  \"strategic_significance\": \"Low|Medium|High - assess market importance\",\n  \"competitive_impact\": \"Brief analysis of competitive implications (max 150 chars)\"\n}\n\nExtraction Rules:\n1. new_market: Extract country/region name (e.g., \"India\", \"Southeast Asia\", \"Middle East\")\n2. city: Extract specific city if mentioned (e.g., \"Mumbai\", \"Dubai\")\n3. entry_type: Choose most accurate category based on post content\n4. timeline: Extract opening timeline or use \"Opened\" if already launched\n5. store_count: Extract number if mentioned (e.g., \"5 stores\", \"First store\")\n6. key_details: Summarize unique aspects (product focus, format, partners)\n7. strategic_significance: Assess based on market size and brand presence\n8. competitive_impact: Brief analysis of how this affects competition\n\nBe precise and concise. Return ONLY the JSON object."
            },
            {
              "content": "=Extract market entry intelligence from this Instagram post:\n\nBrand: {{ $('Get Dataset Items').item.json.ownerUsername }}\nPost Date: {{ $('Get Dataset Items').item.json.timestamp }}\nCaption: {{ $('Get Dataset Items').item.json.caption }}\nLikes: {{ $('Get Dataset Items').item.json.likesCount }}\nComments: {{ $('Get Dataset Items').item.json.commentsCount }}\n\nReturn only JSON."
            }
          ]
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 2.1,
      "position": [
        144,
        -176
      ],
      "id": "31835518-f34e-4d05-9cac-48dc98600291",
      "name": "AI Extract Market Entry Intelligence",
      "credentials": {
        "openAiApi": {
          "id": "ICwxUBbatsF2sDvy",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1OpJajowr_8av3uxZ_pR8aDEeS6Gj1vIqaWU2Mpe9FZU",
          "mode": "list",
          "cachedResultName": "Case 65 - Market Entry Log",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OpJajowr_8av3uxZ_pR8aDEeS6Gj1vIqaWU2Mpe9FZU/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OpJajowr_8av3uxZ_pR8aDEeS6Gj1vIqaWU2Mpe9FZU/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Analysis_Date": "={{ $json.analysis_timestamp }}",
            "Brand": "={{ $json.brand }}",
            "New_Market": "={{ $json.new_market }}",
            "City": "={{ $json.city }}",
            "Entry_Type": "={{ $json.entry_type }}",
            "Timeline": "={{ $json.timeline }}",
            "Store_Count": "={{ $json.store_count }}",
            "Key_Details": "={{ $json.key_details }}",
            "Strategic_Significance": "={{ $json.strategic_significance }}",
            "Competitive_Impact": "={{ $json.competitive_impact }}",
            "Post_Date": "={{ $json.post_date }}",
            "Post_URL": "={{ $json.post_url }}",
            "Likes": "={{ $json.likes_count }}",
            "Comments": "={{ $json.comments_count }}",
            "Engagement": "={{ $json.engagement_total }}"
          },
          "matchingColumns": [
            "Post_URL"
          ],
          "schema": [
            {
              "id": "Analysis_Date",
              "displayName": "Analysis_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Brand",
              "displayName": "Brand",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "New_Market",
              "displayName": "New_Market",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "displayName": "City",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Entry_Type",
              "displayName": "Entry_Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Timeline",
              "displayName": "Timeline",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Store_Count",
              "displayName": "Store_Count",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Key_Details",
              "displayName": "Key_Details",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Strategic_Significance",
              "displayName": "Strategic_Significance",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Competitive_Impact",
              "displayName": "Competitive_Impact",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Post_Date",
              "displayName": "Post_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Post_URL",
              "displayName": "Post_URL",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Likes",
              "displayName": "Likes",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Comments",
              "displayName": "Comments",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Engagement",
              "displayName": "Engagement",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        768,
        -176
      ],
      "id": "b254445b-95ff-4e38-b6aa-5213e7ca061c",
      "name": "Log to Google Sheet",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "LOs2dbk9lby0NfDM",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Aggregate all market entry signals into a summary report\nconst items = $input.all();\n\nif (items.length === 0) {\n  return {\n    json: {\n      summary: \"No market entry signals detected this week.\",\n      total_signals: 0,\n      by_brand: {},\n      by_market: {},\n      by_entry_type: {}\n    }\n  };\n}\n\n// Count by brand\nconst byBrand = {};\nconst byMarket = {};\nconst byEntryType = {};\nconst highPrioritySignals = [];\n\nitems.forEach(item => {\n  const data = item.json;\n  \n  // Count by brand (use Brand from Google Sheets)\n  const brand = data.Brand || data.brand || 'unknown';\n  byBrand[brand] = (byBrand[brand] || 0) + 1;\n  \n  // Count by market (use New_Market from Google Sheets)\n  const market = data.New_Market || data.new_market || 'unknown';\n  byMarket[market] = (byMarket[market] || 0) + 1;\n  \n  // Count by entry type (use Entry_Type from Google Sheets)\n  const entryType = data.Entry_Type || data.entry_type || 'unknown';\n  byEntryType[entryType] = (byEntryType[entryType] || 0) + 1;\n  \n  // Collect high priority signals (use Strategic_Significance from Google Sheets)\n  const significance = data.Strategic_Significance || data.strategic_significance;\n  if (significance === 'High') {\n    highPrioritySignals.push({\n      brand: brand,\n      market: market,\n      city: data.City || data.city || 'Not specified',\n      timeline: data.Timeline || data.timeline || 'Unknown',\n      details: data.Key_Details || data.key_details || 'No details'\n    });\n  }\n});\n\n// Create summary text\nlet summaryText = `Market Entry Intelligence Report\\n`;\nsummaryText += `================================\\n\\n`;\nsummaryText += `Total Signals Detected: ${items.length}\\n\\n`;\n\nsummaryText += `By Brand:\\n`;\nObject.entries(byBrand)\n  .sort((a, b) => b[1] - a[1])\n  .forEach(([brand, count]) => {\n    summaryText += `  • ${brand}: ${count} signal(s)\\n`;\n  });\n\nsummaryText += `\\nBy Market:\\n`;\nObject.entries(byMarket)\n  .sort((a, b) => b[1] - a[1])\n  .forEach(([market, count]) => {\n    summaryText += `  • ${market}: ${count} signal(s)\\n`;\n  });\n\nsummaryText += `\\nBy Entry Type:\\n`;\nObject.entries(byEntryType)\n  .sort((a, b) => b[1] - a[1])\n  .forEach(([type, count]) => {\n    summaryText += `  • ${type}: ${count} signal(s)\\n`;\n  });\n\nif (highPrioritySignals.length > 0) {\n  summaryText += `\\n🔴 HIGH PRIORITY SIGNALS (${highPrioritySignals.length}):\\n`;\n  highPrioritySignals.forEach((signal, index) => {\n    summaryText += `\\n${index + 1}. ${signal.brand} → ${signal.market}`;\n    if (signal.city !== 'Not specified' && signal.city !== 'Multiple') {\n      summaryText += ` (${signal.city})`;\n    }\n    summaryText += `\\n   Timeline: ${signal.timeline}\\n`;\n    summaryText += `   Details: ${signal.details}\\n`;\n  });\n}\n\nreturn {\n  json: {\n    report_date: new Date().toISOString(),\n    summary: summaryText,\n    total_signals: items.length,\n    by_brand: byBrand,\n    by_market: byMarket,\n    by_entry_type: byEntryType,\n    high_priority_count: highPrioritySignals.length,\n    high_priority_signals: highPrioritySignals\n  }\n};"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        960,
        -176
      ],
      "id": "fdbea47f-e792-43d0-914a-471ea25aeb03",
      "name": "Aggregate Weekly Report"
    },
    {
      "parameters": {
        "sendTo": "marketinghead@company.com",
        "subject": "=🌍 Weekly Market Entry Signals Report - {{ new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) }}",
        "message": "=={{ $json.summary.replace(/\\n/g, '<br>') }}",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        1152,
        -176
      ],
      "id": "6c410313-b9a0-424f-9995-60f5d128aaa8",
      "name": "Send Email Report",
      "webhookId": "4b514281-0fbe-4206-be6c-26edd9211f00",
      "credentials": {
        "gmailOAuth2": {
          "id": "cyqCGWcggZNMcSOv",
          "name": "Gmail account"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// UNIVERSAL AI RESPONSE PARSER - Same code for ALL cases\nconst items = [];\nconst input = $input.all();\n\nfunction extractJSON(text) {\n  const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n  if (!jsonMatch) return null;\n  return jsonMatch[0];\n}\n\ninput.forEach((item, index) => {\n  try {\n    let aiText = item.json.output[0].content[0].text || '';\n    \n    // Clean markdown code blocks\n    aiText = aiText\n      .replace(/```json/gi, '')\n      .replace(/```/g, '')\n      .trim();\n    \n    // Extract JSON object\n    const jsonStr = extractJSON(aiText);\n    \n    if (!jsonStr) {\n      throw new Error('No JSON found in AI response');\n    }\n    \n    // Parse and return clean JSON\n    const parsed = JSON.parse(jsonStr);\n    items.push({ json: parsed });\n    \n  } catch (error) {\n    console.error(`Parse error for item ${index}:`, error.message);\n    // Return empty object on error - no case-specific fields\n    items.push({ json: {} });\n  }\n});\n\nreturn items;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        416,
        -176
      ],
      "id": "7bd92376-53d0-4165-a50a-50b7b41bb757",
      "name": "Parse AI Response"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "timestamp",
              "name": "analysis_timestamp",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            },
            {
              "id": "brand",
              "name": "brand",
              "value": "={{ $('Get Dataset Items').item.json.ownerUsername || 'unknown' }}",
              "type": "string"
            },
            {
              "id": "new_market",
              "name": "new_market",
              "value": "={{ $json.new_market }}",
              "type": "string"
            },
            {
              "id": "city",
              "name": "city",
              "value": "={{ $json.city }}",
              "type": "string"
            },
            {
              "id": "entry_type",
              "name": "entry_type",
              "value": "={{ $json.entry_type }}",
              "type": "string"
            },
            {
              "id": "timeline",
              "name": "timeline",
              "value": "={{ $json.timeline }}",
              "type": "string"
            },
            {
              "id": "store_count",
              "name": "store_count",
              "value": "={{ $json.store_count }}",
              "type": "string"
            },
            {
              "id": "key_details",
              "name": "key_details",
              "value": "={{ $json.key_details }}",
              "type": "string"
            },
            {
              "id": "strategic_significance",
              "name": "strategic_significance",
              "value": "={{ $json.strategic_significance }}",
              "type": "string"
            },
            {
              "id": "competitive_impact",
              "name": "competitive_impact",
              "value": "={{ $json.competitive_impact }}",
              "type": "string"
            },
            {
              "id": "post_caption",
              "name": "post_caption",
              "value": "={{ $('Get Dataset Items').item.json.caption || '' }}",
              "type": "string"
            },
            {
              "id": "post_date",
              "name": "post_date",
              "value": "={{ $('Get Dataset Items').item.json.timestamp || '' }}",
              "type": "string"
            },
            {
              "id": "post_url",
              "name": "post_url",
              "value": "={{ $('Get Dataset Items').item.json.url || '' }}",
              "type": "string"
            },
            {
              "id": "likes",
              "name": "likes_count",
              "value": "={{ $('Get Dataset Items').item.json.likesCount || 0 }}",
              "type": "number"
            },
            {
              "id": "comments",
              "name": "comments_count",
              "value": "={{ $('Get Dataset Items').item.json.commentsCount || 0 }}",
              "type": "number"
            },
            {
              "id": "total_engagement",
              "name": "engagement_total",
              "value": "={{ ($('Get Dataset Items').item.json.likesCount || 0) + ($('Get Dataset Items').item.json.commentsCount || 0) }}",
              "type": "number"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        608,
        -176
      ],
      "id": "c69e2cd7-6ab9-4bfc-bf2a-14de682e0a8f",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "jsCode": "// UNIVERSAL AI RESPONSE PARSER - Same code for ALL cases\nconst items = [];\nconst input = $input.all();\n\nfunction extractJSON(text) {\n  const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n  if (!jsonMatch) return null;\n  return jsonMatch[0];\n}\n\ninput.forEach((item, index) => {\n  try {\n    let aiText = item.json.output[0].content[0].text || '';\n    \n    // Clean markdown code blocks\n    aiText = aiText\n      .replace(/```json/gi, '')\n      .replace(/```/g, '')\n      .trim();\n    \n    // Extract JSON object\n    const jsonStr = extractJSON(aiText);\n    \n    if (!jsonStr) {\n      throw new Error('No JSON found in AI response');\n    }\n    \n    // Parse and return clean JSON\n    const parsed = JSON.parse(jsonStr);\n    items.push({ json: parsed });\n    \n  } catch (error) {\n    console.error(`Parse error for item ${index}:`, error.message);\n    // Return empty object on error - no case-specific fields\n    items.push({ json: {} });\n  }\n});\n\nreturn items;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -352,
        -176
      ],
      "id": "6d94c45e-842c-4eb8-975a-d867d53bcb51",
      "name": "Parse AI Response1"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "is_market_entry",
              "name": "is_market_entry",
              "value": "={{ $json.is_market_entry }}",
              "type": "string"
            },
            {
              "id": "confidence",
              "name": "confidence",
              "value": "={{ $json.confidence }}",
              "type": "number"
            },
            {
              "id": "reason",
              "name": "reason",
              "value": "={{ $json.reason }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -176,
        -176
      ],
      "id": "b3160a71-6405-412c-90f3-ab96bb60c623",
      "name": "Edit Fields1"
    }
  ],
  "pinData": {},
  "connections": {
    "Weekly Schedule - Monday 9 AM": {
      "main": [
        [
          {
            "node": "Scrape Competitor Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Competitor Instagram": {
      "main": [
        [
          {
            "node": "Get Dataset Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Dataset Items": {
      "main": [
        [
          {
            "node": "AI Validation - Market Entry Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Validation - Market Entry Filter": {
      "main": [
        [
          {
            "node": "Parse AI Response1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Only Market Entry Posts": {
      "main": [
        [
          {
            "node": "AI Extract Market Entry Intelligence",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Extract Market Entry Intelligence": {
      "main": [
        [
          {
            "node": "Parse AI Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log to Google Sheet": {
      "main": [
        [
          {
            "node": "Aggregate Weekly Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Weekly Report": {
      "main": [
        [
          {
            "node": "Send Email Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Response": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Log to Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Response1": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Filter Only Market Entry Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ea751e1f-0f77-4bc7-9bde-8135e90e56e5",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "3a43da28588548e21903e71cf1dc3ddd65c24bf0c62e7e4b77542ffe87ad79c6"
  },
  "id": "abaGgmJpkE5C8rhn",
  "tags": []
}